NULL =

# Avoid need for python(pyparsing) by end users
CLIENT_MARSHALLERS =				\
	generated_client_demarshallers.c	\
	generated_client_demarshallers1.c	\
	generated_client_marshallers.c		\
	generated_client_marshallers1.c		\
	$(NULL)

SERVER_MARSHALLERS =				\
	generated_server_demarshallers.c	\
	generated_server_marshallers.c		\
	generated_server_marshallers.h		\
	$(NULL)

BUILT_SOURCES = $(CLIENT_MARSHALLERS) $(SERVER_MARSHALLERS) $(top_srcdir)/spice-protocol/spice/enums.h

noinst_LTLIBRARIES = libspice-common.la libspice-common-server.la libspice-common-client.la
libspice_common_la_SOURCES =		\
	backtrace.c			\
	backtrace.h			\
	bitops.h			\
	canvas_utils.c			\
	canvas_utils.h			\
	client_demarshallers.h		\
	client_marshallers.h		\
	draw.h				\
	lines.c				\
	lines.h				\
	log.c				\
	log.h				\
	lz.c				\
	lz.h				\
	lz_common.h			\
	lz_config.h			\
	macros.h			\
	marshaller.c			\
	marshaller.h			\
	mem.c				\
	mem.h				\
	messages.h			\
	pixman_utils.c			\
	pixman_utils.h			\
	quic.c				\
	quic.h				\
	quic_config.h			\
	rect.h				\
	region.c			\
	region.h			\
	ring.h				\
	rop3.c				\
	rop3.h				\
	snd_codec.c			\
	snd_codec.h			\
	spice_common.h			\
	ssl_verify.c			\
	ssl_verify.h			\
	verify.h			\
	$(NULL)

# These 2 files are not build as part of spice-common
# build system, but modules using spice-common will build
# them with the appropriate options. We need to let automake
# know that these are source files so that it can properly
# track these files dependencies
EXTRA_libspice_common_la_SOURCES = 	\
	sw_canvas.c			\
	sw_canvas.h			\
	$(NULL)

libspice_common_client_la_SOURCES =		\
	$(CLIENT_MARSHALLERS)			\
	$(NULL)

libspice_common_server_la_SOURCES =		\
	$(SERVER_MARSHALLERS)			\
	$(NULL)

libspice_common_server_la_CFLAGS = -DFIXME_SERVER_SMARTCARD

if SUPPORT_GL
libspice_common_la_SOURCES +=		\
	gl_utils.h			\
	glc.c				\
	glc.h				\
	ogl_ctx.c			\
	ogl_ctx.h			\
	$(NULL)
endif

AM_CPPFLAGS =				\
	-I$(top_srcdir)			\
	$(SPICE_COMMON_CFLAGS)		\
	$(PROTOCOL_CFLAGS)		\
	$(NULL)

libspice_common_la_LIBADD =				\
	$(SPICE_COMMON_LIBS)				\
	$(NULL)

MARSHALLERS_DEPS =					\
	$(top_srcdir)/python_modules/__init__.py	\
	$(top_srcdir)/python_modules/codegen.py		\
	$(top_srcdir)/python_modules/demarshal.py	\
	$(top_srcdir)/python_modules/marshal.py		\
	$(top_srcdir)/python_modules/ptypes.py		\
	$(top_srcdir)/python_modules/spice_parser.py	\
	$(top_srcdir)/spice_codegen.py			\
	$(NULL)

# Note despite being autogenerated these are not part of CLEANFILES, they are
# actually a part of EXTRA_DIST, to avoid the need for pyparser by end users
generated_client_demarshallers.c: $(top_srcdir)/spice.proto $(MARSHALLERS_DEPS)
	$(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-demarshallers --client --include common/messages.h $< $@ >/dev/null

generated_client_demarshallers1.c: $(top_srcdir)/spice1.proto $(MARSHALLERS_DEPS)
	$(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-demarshallers --client --include common/messages.h --prefix 1 --ptrsize 8 $< $@ >/dev/null

generated_client_marshallers.c: $(top_srcdir)/spice.proto $(MARSHALLERS_DEPS)
	$(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers -P --include common/messages.h --include client_marshallers.h --client $< $@ >/dev/null

generated_client_marshallers1.c: $(top_srcdir)/spice1.proto $(MARSHALLERS_DEPS)
	$(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers -P --include common/messages.h --include client_marshallers.h --client --prefix 1 --ptrsize 8 $< $@ >/dev/null

generated_server_demarshallers.c: $(top_srcdir)/spice.proto $(MARSHALLERS_DEPS)
	$(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-demarshallers --server --include common/messages.h $< $@ >/dev/null

STRUCTS = -M String -M Rect -M Point -M DisplayBase -M Fill -M Opaque -M Copy -M Blend -M Blackness -M Whiteness -M Invers -M Rop3 -M Stroke -M Text -M Transparent -M AlphaBlend -M Composite
generated_server_marshallers.c: $(top_srcdir)/spice.proto $(MARSHALLERS_DEPS)
	$(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers $(STRUCTS) --server --include common/messages.h $< $@ >/dev/null

generated_server_marshallers.h: $(top_srcdir)/spice.proto $(MARSHALLERS_DEPS)
	$(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers $(STRUCTS) --server --include common/messages.h -H $< $@ >/dev/null

# this is going to upset automake distcheck, since we try to write to
# readonly srcdir. To limit the fail chances, rebuild automatically
# enums.h only if the spice.proto has changed.
$(top_srcdir)/spice-protocol/spice/enums.h: $(top_srcdir)/spice.proto # $(MARSHALLERS_DEPS)
	$(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-enums $< $@ >/dev/null

EXTRA_DIST =				\
	$(CLIENT_MARSHALLERS)		\
	$(SERVER_MARSHALLERS)		\
	canvas_base.c			\
	canvas_base.h			\
	gdi_canvas.c			\
	gdi_canvas.h			\
	gl_canvas.c			\
	gl_canvas.h			\
	lz_compress_tmpl.c		\
	lz_decompress_tmpl.c		\
	quic_family_tmpl.c		\
	quic_rgb_tmpl.c			\
	quic_tmpl.c			\
	snd_codec.h			\
	$(NULL)

-include $(top_srcdir)/git.mk
